A distributed transaction processing system is a system in which a transaction is processed across multiple resources of the system. Examples of resources include storage subsystems, database management subsystems, and so forth.
A distributed transaction processing system typically includes a transaction manager that is responsible for coordinating a transaction that is performed across multiple resources. The transaction manager also is responsible for transaction completion (committing a transaction or aborting a transaction) and failure recovery. However, if the transaction manager were to crash for any reason, then any outstanding transaction that is managed by the transaction manager would remain active until the transaction manager comes back up and is able to provide instructions on how to complete the transaction. In the meantime, however, various resources may be locked while the transaction manager is down, which can potentially block other transactions from accessing or modifying such locked resources. If the transaction manager is stopped for a relatively long period of time (e.g., hours or even days), then processing of other transactions can be adversely affected.